#ifndef K_AUTO_MOVE_H
#define K_AUTO_MOVE_H
#pragma once

#include "KNoCopy.h"
#include <utility>

template <class T>
class KAutoMove : KNoCopy {
public:
    KAutoMove(T &&var) : m_var(std::move(var)) {}
    KAutoMove(const T &var) : m_var(var) {}
public:
    operator T &&() const   { return std::move(m_var); }
public:
    T &get() const          { return m_var; }
private:
    mutable T m_var;
};

#endif // K_AUTO_MOVE_H